package com.entidades.dao;

import com.entidades.Campanha;
import com.entidades.Pacote;
import com.entidades.enumerandos.StatusPacoteEnum;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

/**
 *
 * @author Ricardo
 */
public class PacoteDao extends DaoBasico {

    public static List<Pacote> findPacotesByCampanha(Campanha c) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("SMSChattyPU");
        EntityManager em = emf.createEntityManager();

        Query query = em.createQuery("select p from Pacote as p " +
                "where p.campanha=:c1 and p.status=:s1 " +
                "and p.status=:s2").setParameter("c1", c).setParameter("s1", StatusPacoteEnum.NOVO).setParameter("s2", StatusPacoteEnum.PENDENTE);
        List<Pacote> listaRetorno = query.getResultList();
        return listaRetorno;
    }

    public static List<Pacote> findAllPacotesByCampanha(Campanha c,EntityManager em) {

        Query query = em.createQuery("select p from Pacote as p " +
                "where p.campanha=:c1  ").setParameter("c1", c);

        List<Pacote> listaRetorno = query.getResultList();
        return listaRetorno;
    }

    public static List<Pacote> findPacotesPendentes(Campanha c) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("SMSChattyPU");
        EntityManager em = emf.createEntityManager();
        Query query = em.createQuery("select p from Pacote as p " +
                "where p.campanha=:c1 and " +
                "p.status =:st").setParameter("c1", c).setParameter("st", StatusPacoteEnum.PENDENTE);
        List<Pacote> listaRetorno = query.getResultList();
        return listaRetorno;
    }

    public static List<Pacote> findAllPacotesFalhaByCampanha(Campanha campanha,EntityManager em) {


        Query query = em.createQuery("select p from Pacote as p " +
                "where p.campanha=:c1 and p.status=:s1 ")
                .setParameter("c1", campanha)
                .setParameter("s1", StatusPacoteEnum.FALHA);
        List<Pacote> listaRetorno = query.getResultList();
        return listaRetorno;
    }

    public static List<Pacote> findAllPacotesEnviadoByCampanha(Campanha campanha,EntityManager em) {


        Query query = em.createQuery("select p from Pacote as p " +
                "where p.campanha.id=:c and p.status=:s1 ")
                .setParameter("c", campanha.getId())
                .setParameter("s1", StatusPacoteEnum.ENVIADO);
        List<Pacote> listaRetorno = query.getResultList();
        return listaRetorno;
    }
}
